mkdir関数は、ディレクトリ(フォルダ)を作成します。
この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
#include <sys/stat.h>
int mkdir(const char *pathname, mode_t mode);
*pathnameは作成するディレクトリをパス名で指定します。
modeはディレクトリのアクセス許可情報(パーミッション)を指定します。
戻り値として、処理が成功した場合は0が、エラーの場合は-1を返します。
第2引数のmodeについては、chmod関数をご覧ください。ただし、ここで指定した許可情報がそのまま付与されるわけではなく、実際の許可情報は mode & ~umask & 0777
となります。
次の例題プログラムでは、許可情報として0777(rwxrwxrwx)を指定していますが、umask値が0022のため、実際に付与される許可情報は0755(rwxr-xr-x)になっています。
プログラム 例
#include <stdio.h> #include <sys/stat.h> int main(int argc, char **argv) { int return_code = 0; if (argc == 2) { /* ディレクトリを作る */ if (mkdir(*(argv + 1), S_IRUSR | S_IWUSR | S_IXUSR | /* rwx */ S_IRGRP | S_IWGRP | S_IXGRP | /* rwx */ S_IROTH | S_IXOTH | S_IXOTH) == 0) { /* rwx */ printf('%sを作成しました\n', *(argv + 1)); } else { printf('%sを作成できませんでした\n', *(argv + 1)); perror(''); return_code = 1; } } else { printf('実行時引数の数が不当です\n'); return_code = 2; } return return_code; }
例の実行結果
$ ls -ld DIR3 ls: cannot access DIR3: そのようなファイルやディレクトリはありません $ $ umask 0022 $ ./mkdir.exe ./DIR3 ./DIR3を作成しました $ $ ls -ld DIR3 drwxr-xr-x 2 user users 4096 2008-08-01 14:02 DIR3 $